#include<stdio.h>
#include"process.h"
#include<string.h>
#include<unistd.h>
#include<time.h>

#define NUM 101
#define STYLE1 '='
#define STYLE2 '>'
#define POINT '.'
#define SPACE ' '

const int pnum = 6;

// version 2 :真实的进度条，应该根据具体的下载量，来动态刷新进度
void FlushProcess(double total, double current)
{
    // 1. 更新当前进度的百分比
    double rate =(current / total) * 100;
    //printf("%.1lf%%\r",rate);
    //fflush(stdout);

    // 2. 更新进度条主体
    char bar[NUM];//  1% 就更新一个符号
    memset(bar, '\0', sizeof(bar));
    int i = 0;
    for(i = 0; i < (int)rate; i++)
    {
        bar[i] = STYLE1;
    }

    // 3. 更新旋转光标/ 其他风格
    static int num = 0;
    num++;
    num %= pnum;

    char points[pnum + 1];
    memset(points, '\0', sizeof(points));
    for(i = 0; i < pnum; i++ )
    {
       if(i < num) points[i] = POINT;
       else points[i] = SPACE;
    }

    //for(i = 0; i < num; i++)
    //{
    //    points[i] = POINT;
    //}

    // 4.test && printf 
    printf("[%-100s][%.1lf%%]%s\r",bar,rate,points);
    fflush(stdout);
    //usleep(10000);

}






// version 1

//void Process()
//{
//    const char lable[] = "|/-\\";
//    char bar[NUM];
//    memset(bar,'\0',sizeof(bar));
//    int len = strlen(lable);
//    int cnt = 0;
//    while(cnt <= 100)
//    {
//        bar[cnt] = STYLE2;
//        printf("[%-100s][%d%%][%c]\r",bar,cnt,lable[cnt%len]);
//        fflush(stdout);
//        usleep(20000);
//        bar[cnt] = STYLE1;
//        printf("[%-100s][%d%%][%c]\r",bar,cnt,lable[cnt%len]);
//        cnt++;
//
//        usleep(20000);
//    }
//
//    printf("\n");
//}
